package br.com.sigeden.dao;

import br.com.sigeden.model.Envolvido;
import br.com.sigeden.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author David Amom <davidamom@gmail.com>
 */
public class EnvolvidoDAO {

    private Session sessao;
    private Transaction transacao;
    private List<Envolvido> envolvidos;

    public List<Envolvido> listarEnvolvidos() {
        sessao = HibernateUtil.getSessionFactory().openSession();

        Criteria criteria = sessao.createCriteria(Envolvido.class);
        this.envolvidos = criteria.list();

        sessao.close();
        return envolvidos;
    }

    public void adicionarEnvolvido(Envolvido envolvido) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();

            Envolvido e = new Envolvido();
            e.setCabelo(envolvido.getCabelo());
            e.setCorDosOlhos(envolvido.getCorDosOlhos());
            e.setDescricao(envolvido.getDescricao());
            e.setEstatura(envolvido.getEstatura());
            e.setEtnia(envolvido.getEtnia());
            e.setPorte(envolvido.getPorte());

            sessao.save(e);
            transacao.commit();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }
    }

    public void removerEnvolvido(Envolvido envolvido) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();

            sessao.delete(envolvido);
            transacao.commit();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }
    }

    public void atualizarEnvolvido(Envolvido envolvido) {
        try {
            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();

            sessao.update(envolvido);
            transacao.commit();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            sessao.close();
        }
    }
}
